package org.wisdom.ac.apis;

import java.util.List;

import org.springframework.web.bind.annotation.*;
import org.wisdom.ac.dto.ResourceDto;
import org.wisdom.ac.dto.ResourcesDto;
import org.wisdom.annotation.WisdomFeignClient;
import org.wisdom.vo.PageModel;
import org.wisdom.vo.ResponseResult;

/**
 * 资源API
 *
 * @author 张智研
 * @date 2022/05/17 15:06
 **/
@WisdomFeignClient(name = "${wisdom.ac.name:wisdom-ac}", path = "/${wisdom.ac.name:wisdom-ac}/resource",
    contextId = "wisdom-ac-resource")
public interface ResourceController {
    /**
     * 创建资源-应用
     *
     * @author 张智研
     * @date 2022/05/27 21:03
     * @param resourceDto
     *            资源信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app")
    ResponseResult<String> saveApp(@RequestBody ResourceDto resourceDto);

    /**
     * 创建资源-应用服务
     *
     * @author 张智研
     * @date 2022/05/27 21:03
     * @param resourceDto
     *            资源信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_facade")
    ResponseResult<String> saveAppFacade(@RequestBody ResourceDto resourceDto);

    /**
     * 创建资源-应用页面
     *
     * @author 张智研
     * @date 2022/05/27 21:03
     * @param resourceDto
     *            资源信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_page")
    ResponseResult<String> saveAppPage(@RequestBody ResourceDto resourceDto);

    /**
     * 创建页面元素
     * @author 张智研
     * @date 2023/04/23 09:58
     * @param resourceDto 资源信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_page_element")
    ResponseResult<String> saveAppPageElement(@RequestBody ResourceDto resourceDto);

    /**
     * 创建资源-应用页面[批量创建]
     *
     * @author 张智研
     * @date 2022/09/16 14:28
     * @param resourcesDto
     *            资源集合
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_pages")
    ResponseResult<String> saveAppPage(@RequestBody ResourcesDto resourcesDto);

    /**
     * 创建资源-应用页面控件
     *
     * @author 张智研
     * @date 2022/05/27 21:03
     * @param resourceDto
     *            资源信息
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_widget")
    ResponseResult<String> saveAppWidget(@RequestBody ResourceDto resourceDto);

    /**
     * 创建资源-应用页面控件[批量创建]
     *
     * @author 张智研
     * @date 2022/05/27 21:03
     * @param resourcesDto
     *            资源信息集合
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @PostMapping("/save_app_widgets")
    ResponseResult<String> saveAppWidget(@RequestBody ResourcesDto resourcesDto);


    /**
     * 查询用户所有资源
     *
     * @author 张智研
     * @date 2022/05/31 13:41
     * @param userId
     *            用户id
     * @return org.wisdom.vo.ResponseResult<org.wisdom.ac.dto.ResourceDto>
     */
    @GetMapping("/user_resource_list")
    ResponseResult<List<ResourceDto>> queryAllUserResourceList(@RequestParam("userId") String userId);

    /**
     * 查询当前用户所有资源
     * 
     * @author 张智研
     * @date 2022/09/27 15:46
     * @return org.wisdom.vo.ResponseResult<java.util.List<org.wisdom.ac.dto.ResourceDto>>
     */
    @GetMapping("/current_user_resource_list")
    ResponseResult<List<ResourceDto>> queryAllUserResourceList();

    /**
     * 查询所有资源
     * 
     * @author 张智研
     * @date 2022/08/31 16:12
     * @param resourceDto
     *            查询条件
     * @return org.wisdom.vo.ResponseResult<org.wisdom.vo.PageModel<org.wisdom.ac.dto.ResourceDto>>
     */
    @GetMapping("/list")
    ResponseResult<PageModel<ResourceDto>> queryAll(ResourceDto resourceDto);

    /**
     * 查询资源
     * @author 张智研
     * @date 2023/04/19 09:50
     * @param resourceId 资源ID
     * @return org.wisdom.vo.ResponseResult<org.wisdom.ac.dto.ResourceDto>
     */
    @GetMapping("/{resourceId}")
    ResponseResult<ResourceDto> get(@PathVariable("resourceId") String resourceId);
    /**
     * 删除资源
     *
     * @author 张智研
     * @date 2023/04/19 09:49
     * @param resourceIds 资源ID
     * @return org.wisdom.vo.ResponseResult<java.lang.String>
     */
    @DeleteMapping("/{resourceIds}")
    ResponseResult<String> delete(@PathVariable("resourceIds") String resourceIds);
}